package com.mida.app.report.vo;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.mida.app.report.requestform.DiagnosisSetVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author: bzy
 * @Description:
 * @Date: 2021/08/12 11:13
 * @params:
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("病人详细信息vo")
public class RequestInfoVo {
    /**
     * 患者姓名
     */
    private String personName;
    /**
     * 人标识
     */
    private String apntPersonSoid;
    /**
     * 性别
     */
    private String gender;

    /**
     * 性别Soid
     */
    private Long genderCode;

    /**
     * 年龄
     */
    private String age;

    /**
     * 患者号
     */
    private String patientNo;
    //(作废)
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long requestNo;

    /**
     * 出生年月
     */
    private String birthDate;

    /**
     * 住院号
     */
    private String hospitalNo;

    /**
     * 身份证号
     */
    private String idcardNo;

    /**
     * 医保卡号
     */
    private String clinicCardNo;

    /**
     * 本人电话
     */
    private String contactNo;

    /**
     * 家属电话
     */
    private List<String> familyPhoneList;

    /**
     * 家庭住址
     */
    private String customerAdrress;

    /**
     * 病人类型
     */
    private String customerType;

    /**
     * 病区
     */
    private String nursingWard;

    /**
     * 床号
     */
    private String bedNo;
    /**
     * 门诊号
     */
    @ApiModelProperty(name = "outpatientNo", value = "门诊号", dataType = "String")
    private String outpatientNo;


    /**
     * 申请科室/开单科室
     */
    private String businessUnitName;
    private Long clinicalBusinessUnitSoid;
    /**
     * 申请医生
     */
    private String doctor;

    /**
     * 申请时间
     */
    private Date createDate;

    /**
     * 检查摘要
     */
    @ApiModelProperty(name = "clinicalSummary", value = "检查摘要", dataType = "String")
    private String clinicalSummary;

    @ApiModelProperty(
            name = "historyPresentIllness",
            value = "现病史",
            dataType = "String"
    )
    private String historyPresentIllness;

    @ApiModelProperty(
            name = "historyPersonalIllness",
            value = "个人病史",
            dataType = "String"
    )
    private String historyPersonalIllness;


    @ApiModelProperty(
            name = "historyPastIllness",
            value = "既往病史",
            dataType = "String"
    )
    private String historyPastIllness;
    /**
     * 临床简史
     */
    private String clinicalHistory;

    /**
     * 特殊说明
     */
    private String specialNote;

    /**
     * 角色标识
     */
    private String customerSoid;

    /**
     * 影像号
     */
    private String dicomNo;

    /**
     * 就诊场景码
     */
    @ApiModelProperty(name = "visitScenceCode", value = "就诊场景码", dataType = "String")
    private String visitScenceCode;
    /**
     * 就诊类型名称
     */
    private String clinicTypeName;

    /**
     * 申请单号
     */
    private String requisitionId;
    /**
     * 申请标识
     */
    private Long requestSoid;

    private Long registrationFormSoid;//登记标识
    private String registrationNo;//登记号
    /**
     * 申请单状态名称
     */
    private String requestStatusName;
    /**
     * 申请单状态
     */
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long requestStatus;
    /**
     * 紧急度
     */
    @ApiModelProperty(name = "emergencySign", value = "紧急度", dataType = "String")
    private String emergencySign;
    /**
     * 加急名称
     */
    private String emergencySignName;

    @ApiModelProperty(
            name = "checkUnitName",
            value = "检查科室",
            dataType = "String"
    )
    private String checkUnitName;

    @JsonSerialize(using= com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    //检查标识
    private Long operatorSoid;

    //检查号
    private String examinationVisitSoid;

    //检查类型
    private String examType;

    @ApiModelProperty(
            name = "serviceInstanceVoList",
            value = "服务实例列表",
            dataType = "List<ServiceInstanceVo>"
    )
    private List<ServiceInstanceCheckVo> serviceInstanceVoList;

    @ApiModelProperty(
            name = "diagnosisSetVo",
            value = "临床诊断",
            dataType = "DiagnosisSetVo"
    )
    private DiagnosisSetVo diagnosisSetVo;




    /**
     * 书写医生
     */
    private String writingDoctor;
    @JsonSerialize(using= com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long writingDoctorSoid;

    /**
     * 审核医生
     */
    private String checkDoctor;
    @JsonSerialize(using= com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long checkDoctorSoid;

    /**
     * 报告状态
     */
    private String reportStatus;
    @JsonSerialize(using= com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long reportProcessStatus;//报告流程状态
    /**
     * 报告小状态
     */
    private String statusName;
    @JsonSerialize(using= com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long Status;//报告自身状态


    /**
     * 报告soid
     */
    @JsonSerialize(using= com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long stReportSoid;

    //还有几个元素
    private Integer elements;

    //几份申请单
    private Integer requisitions;
    //几份登记单
    private Integer registrations;
    //合单后存下的数据
    private List<DocReportListVo> docReportListVos;

    //用来展示的数据
    private Map<Long, List<DocReportListVo>> dataMap;

    @ApiModelProperty(value = "报告类型", required = false)
    @JsonSerialize(using= com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long reportType;
}
